//=======================================Copyright(c)===========================================
// 								  深圳易马达科技有限公司
//---------------------------------------文件信息----------------------------------------------
//文件名   	: SysState.h
//创建人  	: Handry
//创建日期	: 
//描述	    : 系统状态头文件
//-----------------------------------------------当前版本修订----------------------------------
//修改人   	:
//版本	    :
//修改日期	:
//描述	    :
//=============================================================================================
#ifndef _SYSSTATE_H_
#define _SYSSTATE_H_

//=============================================================================================
//头文件
//=============================================================================================
#include "BSPTypeDef.h"
#include "BatteryInfo.h"

//=============================================================================================
//宏参数设定
//=============================================================================================
#define 	STATE_CHGMOS 	0x0001
#define 	STATE_DSGMOS 	0x0002
#define 	STATE_PREMOS 	0x0004
#define 	STATE_HALL 		0x0008
#define 	STATE_BALA 		0x0010
#define 	STATE_DEVFT 	0x0020
#define 	STATE_OPTFT 	0x0040
#define 	STATE_OPTWARN 	0x0080
#define 	STATE_CERT 		0x0100
#define 	STATE_PHOTO 	0x0200
#define 	STATE_EXMODULE 	0x0400  //外置模块状态
#define 	STATE_POLL 		0x8000
#define 	STATE_FC 		0x4000


#define 	PCURR_LIMIT 	50
#define 	PCURR_LIMIT_RE 	5
#define 	NCURR_LIMIT 	-50
#define 	NCURR_LIMIT_RE 	-5
#define 	CURR_DELAY 		15
//=============================================================================================
//数据类型定义
//=============================================================================================
typedef enum
{
    WORK_STA_INIT = 0,
    WORK_STA_SHDN = 1,
    WORK_STA_SLEEP = 2,
    WORK_STA_NORM = 3,
}t_WORK_STA;

//=============================================================================================
//声明变量，供外部使用
//=============================================================================================
extern u8 gChgFlag;        //充电标志，0：不充电；1：充电
extern u8 gDchgFlag;       //放电标志，0：不放电；1：充电

//=============================================================================================
//声明接口函数
//=============================================================================================
//=============================================================================================
//函数名称	: void SysStateInit(void)
//函数参数	: void
//输出参数	: void
//静态变量	: void
//功    能	: 系统状态初始化函数
//注    意	:
//=============================================================================================
void SysStateInit(void);

//=============================================================================================
//函数名称	: void SysStateCurrentFlagUpdate(void)
//函数参数	: void
//输出参数	: void
//静态变量	: void
//功    能	: 充放电电流标志状态更新
//注    意	:
//=============================================================================================
void SysStateCurrentFlagUpdate(void);

//=============================================================================================
//函数名称	: void SysStateRunTest(void)
//函数参数	: void
//输出参数	: void
//静态变量	: void
//功    能	: BMS运行时跑的测试任务
//注    意	: 测试引脚输出方波，运行时调用
//=============================================================================================
void SysStateRunTest(void);

//=============================================================================================
//函数名称	: e_ChgDchgStatus SysStateGetChgDchgSta(void)
//函数参数	: void
//输出参数	: 充放电状态；0：空闲；1：充电；2：放电
//静态变量	: void
//功    能	: 获取充放电标志
//注    意	:
//=============================================================================================
e_ChgDchgStatus SysStateGetChgDchgSta(void);

//=============================================================================================
//函数名称	: e_WorkStatus SysStateGetWorkSta(void)
//函数参数	: 电池工作状态；0：初始化状态；1：空闲状态；2：正在启动状态；3：运行状态；4：故障状态
//输出参数	: void
//静态变量	: void
//功    能	: 设置电池工作状态
//注    意	:
//=============================================================================================
void SysStateSetWorkSta(e_WorkStatus worksta);

//=============================================================================================
//函数名称	: e_WorkStatus SysStateGetWorkSta(void)
//函数参数	: void
//输出参数	: 电池工作状态；0：初始化状态；1：空闲状态；2：正在启动状态；3：运行状态；4：故障状态
//静态变量	: void
//功    能	: 获取电池工作状态
//注    意	:
//=============================================================================================
e_WorkStatus SysStateGetWorkSta(void);

#endif

/*****************************************end of SysState.h*****************************************/

